'''
关联：
      ① 概念：当请求之间有依赖关系（一个请求的响应作为另一个请求的参数进行传递，就需要用关联处理）
      ② 常用关联：
                11、正则表达式提取器：
                                介绍：
                                    .    通配符，可以代表任意字符（除换行回车）
                                    *    代表前面的字符出现0次或无数次
                                    .*   找到左边界值后，往右查找有边界，找到最后面的右边界，中间的所有数据都被记录下来
                                    ？   非贪婪匹配，找到左边界后，往右查找匹配右边界，只要有匹配的右边界就停止继续查找，再次查找左边界和右边界
                                         （不要太贪婪，找到第一个匹配项后停止）
                                作用：这妞任意格式的响应数据进行提取
                                操作：测试计划 - 线程组 - http请求 - 右键（添加后置处理器） - 正则表达式提取器
                                         引用名称：   存放提取出的值的参数名称，方便后续请求引用    ${title}
                                         正则表达式： 左边界(.*?)右边界
                                         模板：      用$$引用起来        <p><span>地址(.*?)</span>(.*?)</p>  $2$表示只需要第2个(.*?)的值
                                         匹配数字：   0 随机取值  -1 全部取值  1 取第一个值  5 第五个
                                         缺省值：    没有参数取到值，会默认给一个值
                                取第5个校区地址： 匹配数字5   ${area}     或     匹配数字-1   ${area_5}    -索引从1开始
                12、XPath提取器：
                              作用：针对html格式的响应结果数据进行提取
                              操作：测试计划 - 线程组 - http请求 - 右键（添加后置处理器） - Xpath提取器
                                         use Tidy：    当需要处理的页面是html格式时，必须勾选
                                                       当需要处理的页面是xml或xhtml时，取消勾选
                                         引用名称：      存档提取出的值的参数名称
                                         Xpath Query： 提取值的Xpath表达式    //title
                                         匹配数字：      0 随机取值  -1 全部取值  1 取第一个值
                13、json提取器：
                             作用：针对json格式的响应结果数据进行提取
                             操作：测试计划 - 线程组 - http请求 - 右键（添加后置处理器） - json提取器
                                         names of created variables     存放提取出的值的参数名称
                                         json path expressions          json路径表达式     $.weatherinfo.city
                                         match no                       0 随机取值   -1 全部取值   1 取第一个值       （json格式数据比较唯一，一般都是1）
                                         default values                 参数的默认值
                14、总结：
                        同一个线程组内，多个请求之间的关联：
                                如果响应数据是json格式，优先用json提取器进行关联
                                如果响应数据是html格式，优先用Xpath提取器进行关联
                                如果json提取器和Xpath提取器都无法实现关联，使用正则表达式提取器进行关联
                        不同线程组之间，多个请求之间的关联：
                                json提取器     + JMeter属性
                                Xpath提取器    + JMeter属性
                                正则表达式提取器 + JMeter属性
      ③ JMeter属性-跨线程组关联：
                   11、为什么使用：当有关联关系的两个请求在同一个线程组时，可以使用三种提取器的变量来实现数据传递
                                当不在同一个线程组时，需要用到JMeter属性              （相当于函数/方法中的变量，在外部使用时，必须定义全局变量）
                   12、配置函数：
                             __setProperty函数：将值保存成JMeter属性
                                                   函数助手  __setProperty （属性名称  pro_city     value of property  ${r_city}）
                                                   测试计划 - 线程组1 - http请求 - 右键（添加json提取器） - r_city  $.weatherinfo.city
                                                                   - BeanShell取样器 - ${__setProperty(pro_city,${r_city},)}
                             __Property函数：在其他线程组中使用property函数，读取属性
                                                  函数助手  __Property    （属性名称  pro_city）
                                                  测试计划 - 线程组2 - http请求（路径中，/S?wd=${__property(pro_city,,)}）

                                                  串行：测试计划 - 勾选（独立运行每个线程组）
'''